﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using MJM.RPP.EntidadesNegocio;
using MJM.RPP.AccesoDatos;

namespace MJM.RPP.ComponentesNegocio
{
    public class PersonaCN
    {
        public String IDPersona;

        bool CorreoValido(String Correo)
        {
            if (Correo == "")
                return false;
            if (!Correo.Contains("@") || (!Correo.EndsWith(".com") && !Correo.EndsWith(".pe") && !Correo.EndsWith(".es")) || Correo.Contains(" "))
                return false;           
            return true;
        }

        public int InsertarPersona(PersonaE objPersonaE)
        {
            if (!CorreoValido(objPersonaE.Email))
                return 6;
            if (objPersonaE.NroDocumento == "")
                return 7;
            if ((objPersonaE.IDTipoDocumento == 1 || objPersonaE.IDTipoDocumento == 3) && objPersonaE.NroDocumento.Length < 8)
                return 8;
            if (objPersonaE.IDTipoDocumento == 2 && objPersonaE.NroDocumento.Length < 11)
                return 9;
            
            objPersonaE.Sexo = '\0';
            string mes = DateTime.Now.Month.ToString();
            string dia=DateTime.Now.Day.ToString();
            string hora=DateTime.Now.Hour.ToString();
            string min=DateTime.Now.Minute.ToString();
            string seg=DateTime.Now.Second.ToString();                       
            objPersonaE.Celular2 = "";
            objPersonaE.Celular1 = "";
            objPersonaE.Eliminado = 1;
            objPersonaE.AplicacionFuente = "RegistroPadron";
            objPersonaE.Telefono2 = "";
            objPersonaE.Telefono1 = "";
            objPersonaE.FechaCreacion = DateTime.Now.ToLocalTime().ToString();
            objPersonaE.FechaModificacion=objPersonaE.FechaCreacion;
            if (mes.Length < 2)
                mes = "0" + mes;
            if(dia.Length<2)
                dia = "0" + dia;
            if(hora.Length<2)
                hora = "0" + hora;
            if (min.Length < 2)
                min = "0" + min;
            if (seg.Length < 2)
                seg = "0" + seg;
            objPersonaE.IDPersona = DateTime.Now.Year.ToString().Substring(2,2) + mes + dia + hora + min + seg;
            IDPersona = objPersonaE.IDPersona;
            PersonaAD objPersonaAD=new PersonaAD();
            return objPersonaAD.Insertar(objPersonaE);
        }

        public int InsertarPersona2(PersonaE objPersonaE)
        {/*
            if (!CorreoValido(objPersonaE.Email))
                return 6;
            if (objPersonaE.NroDocumento == "")
                return 7;
            if ((objPersonaE.IDTipoDocumento == 1 || objPersonaE.IDTipoDocumento == 3) && objPersonaE.NroDocumento.Length < 8)
                return 8;
            if (objPersonaE.IDTipoDocumento == 2 && objPersonaE.NroDocumento.Length < 11)
                return 9;
            */
            //objPersonaE.Sexo = '\0';
            string mes = DateTime.Now.Month.ToString();
            string dia = DateTime.Now.Day.ToString();
            string hora = DateTime.Now.Hour.ToString();
            string min = DateTime.Now.Minute.ToString();
            string seg = DateTime.Now.Second.ToString();
            
            objPersonaE.Celular2 = "";
            //objPersonaE.Celular1 = "";
            objPersonaE.Eliminado = 1;
            objPersonaE.AplicacionFuente = "RegistroVecinos";
            
            objPersonaE.Telefono2 = "";
            //objPersonaE.Telefono1 = "";
            objPersonaE.FechaCreacion = DateTime.Now.ToLocalTime().ToString();
            objPersonaE.FechaModificacion = objPersonaE.FechaCreacion;
            if (mes.Length < 2)
                mes = "0" + mes;
            if (dia.Length < 2)
                dia = "0" + dia;
            if (hora.Length < 2)
                hora = "0" + hora;
            if (min.Length < 2)
                min = "0" + min;
            if (seg.Length < 2)
                seg = "0" + seg;
            objPersonaE.IDPersona = DateTime.Now.Year.ToString().Substring(2, 2) + mes + dia + hora + min + seg;
            IDPersona = objPersonaE.IDPersona;
            PersonaAD objPersonaAD = new PersonaAD();
            return objPersonaAD.Insertar(objPersonaE);
        }

        public String ValidaUsuario(String NroDoc)
        {
            PersonaAD objPersonaAD = new PersonaAD();
            string padron = objPersonaAD.ValidaNroDocumento(NroDoc);
            string tramite=objPersonaAD.ValidaDocTramite(NroDoc);
            if (padron != "")
                return padron;
            else if (tramite != "")
                return tramite;
            return "";
        }

        public PersonaE ObtenerPersona(string IDPersona)
        {
            PersonaAD objPersonaAD = new PersonaAD();
            PersonaE obj = objPersonaAD.ObtenerPersona(IDPersona);
            if (obj == null)
                obj = objPersonaAD.ObtenerPersonaTramite(Convert.ToInt32(IDPersona));
            return obj;
        }

        public PersonaE ObtenerPersona(int IDPersona)
        {
            PersonaAD objPersonaAD = new PersonaAD();
            return objPersonaAD.ObtenerPersonaTramite(Convert.ToInt32(IDPersona));            
        }

        public List<PersonaE> Listar(int tipoDocumento,String NroDocumento,String ApePaterno,String ApeMaterno)
        {
            PersonaAD objPersonaAD = new PersonaAD();
            //List<PersonaE> lst = objPersonaAD.Listar(tipoDocumento, NroDocumento, ApePaterno, ApeMaterno);
            List<PersonaE> lst = new List<PersonaE>();
            PersonaTramiteAD objPersonaTramiteAD = new PersonaTramiteAD();
            List<PersonaTramiteEN> lstTramite = objPersonaTramiteAD.Listar(0, ApePaterno, ApeMaterno, NroDocumento);
            for (int i = 0; i < lstTramite.Count; i++)
            {
                if (lstTramite[i].Usuario != "")
                {
                    PersonaE obj = new PersonaE();
                    obj.NombreCompleto = lstTramite[i].NombrePersona;
                    obj.NroDocumento = lstTramite[i].DNI;
                    obj.IDPersona = lstTramite[i].IDPersona.ToString();
                    obj.Fuente = lstTramite[i].Oficina;
                    lst.Add(obj);
                }
            }
            return lst;
        }

        public PersonaE ObtenerPerTramite(string Usuario)
        {
            PersonaAD objAD = new PersonaAD();
            return objAD.BuscaLoginTramite(Usuario);
        }

        public byte[] ObtenerFoto(int ID)
        {
            PersonaAD objAD = new PersonaAD();
            return objAD.FotoTramite(ID);
        }

        public int ActualizarEnTramite(PersonaE obj)
        {
            PersonaAD objPersonaAD = new PersonaAD();
            return objPersonaAD.ActualizarEnTramite(obj);
        }

        public int ActualizarPadron(PersonaE obj)
        {
            PersonaAD objPersonaAD = new PersonaAD();
            return objPersonaAD.ActualizarPadron(obj);
        }

        public PersonaE GetPersonaBD(string dni)
        { 
            PersonaAD objPersonaAD = new PersonaAD();
            return objPersonaAD.ConsultarRENIEC(dni);
        }

        public List<PersonaE> Listar2(string dni, string nombres)
        {
            PersonaAD objPersonaAD = new PersonaAD();
            if (dni.Length == 8)
            {
                return objPersonaAD.Listar2(dni, "&&&");
            }
            else
            {
                return objPersonaAD.Listar2("", nombres);
            }
        }

        public List<PersonaE> ListarPersonaCEC()
        {
            return new PersonaAD().ListarPersonasCEC();
        }
    }
}
